# 构建阶段
FROM m.daocloud.io/docker.io/library/golang:1.23-alpine AS builder

# 设置 Go 模块代理为国内镜像，添加备用代理
ENV GOPROXY=https://goproxy.cn,https://goproxy.io,direct

# 安装基本构建工具
RUN apk add --no-cache git

# 设置工作目录
WORKDIR /app

# 复制依赖文件和缓存
COPY go.* ./
RUN go mod download

# 复制源代码
COPY *.go ./

# 使用静态编译，减小二进制体积
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o server .

# 运行阶段
FROM alpine:latest

# 安装 CA 证书，用于 HTTPS 请求
RUN apk --no-cache add ca-certificates

# 创建必要的目录
WORKDIR /app
COPY --from=builder /app/server .

# 创建静态文件目录
RUN mkdir -p /app/static

# 设置环境变量
ARG PORT=8000
ENV PORT=${PORT}
ENV API_PREFIX=/api/v1

# 暴露端口
EXPOSE ${PORT}

# 运行服务
CMD ["/app/server"] 